"""
十大歌神
NZD正在进行“十大歌神”评选，全校学生可以投票选出他们最喜欢的歌神。
编写一个程序来模拟这个投票和统计过程。
首先，使用random的方式生成100个人名（可以是中英文），然后用random的方法随机抽取这些人名填充到长度为1000的列表中，模拟1000次投票。最后，程序应统计出十大歌神，并特别打印出冠军的名字和所得票数。
"""
import random


def main():
    # 生成 100 个人名，包含中英文
    names = []
    for i in range(100):
        name_length = random.randint(3, 10)
        name = ""
        for _ in range(name_length):
            if random.random() < 0.5:
                name += chr(random.randint(65, 90))  # 生成大写英文字母
            else:
                name += chr(random.randint(97, 122))  # 生成小写英文字母
        names.append(name)

    # 模拟 1000 次投票
    votes = []
    for _ in range(1000):
        votes.append(random.choice(names))

    # 统计票数
    vote_count = {}
    for vote in votes:
        if vote in vote_count:
            vote_count[vote] += 1
        else:
            vote_count[vote] = 1

    # 对投票结果进行排序，找出十大歌神
    sorted_votes = sorted(vote_count.items(), key=lambda x: x[1], reverse=True)
    top_ten = sorted_votes[:10]

    # 打印十大歌神
    print("十大歌神：")
    for i, (name, count) in enumerate(top_ten):
        print(f"{i + 1}. {name}: {count} 票")

    # 打印冠军
    champion_name, champion_votes = top_ten[0]
    print(f"冠军：{champion_name}，获得 {champion_votes} 票")

